﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mono.Cecil;


namespace CustomTypes.Interfaces
{

   
    public interface IAssemblyDescriptor
    {

        string AssemblyName { get; }

        string ShortAssemblyName { get; }

        TypeDefinition GetType(string @namespace, string name);

        IEnumerable<TypeDefinition> GetTypes(HashSet<string> namespaces);

        IEnumerable<TypeDefinition> GetTypes(Predicate<TypeDefinition> predicate, HashSet<string> namespaces = null);



        void Refresh();

        void Clear();        

        devtm.AutoMapper.TypeRepository Repository { get; set; }

        IEnumerable<string> Namespaces(Predicate<TypeDefinition> predicat);

    }
}
